//
//  ZZMainViewController.swift
//  sina
//
//  Created by 张鹏 on 16/5/19.
//  Copyright © 2016年 ZP. All rights reserved.
//

import UIKit

class ZZMainViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        //添加tabController的子视图控制器
        addChildViewControllers()
        
//        //自定义tabBar
        let mainTabbar = ZZMainTabBar()
        
//        //赋值 : 只读属性不能够直接赋值 但是 可以通过 KVC 间接赋值
//        print(tabBar.classForCoder)
        setValue(mainTabbar, forKey: "tabBar")
//        print(tabBar.classForCoder)
        
        //给按钮添加点击事件
        mainTabbar.addBtn.addTarget(self, action: #selector(ZZMainViewController.addBtnDidSelected), forControlEvents: .TouchUpInside)
        
}

    //点击事件方法
    //为了让外界不能够访问按钮的监听方法 需要添加private 私有
    //一旦添加private 这个时候这个 就不具备动态派发的特性
    //需要添加 @objc 告诉系统这个方法 是基于OC消息动态派发的
    @objc private func addBtnDidSelected() {
    
    print("加号按钮的点击方法")
        let composeView = ZZComposeView()
        
        //TODO: 把ZZComposeViewController控制器传走.....
        composeView.show(targetVC: self)
        
        let window = UIApplication.sharedApplication().keyWindow
        
        window?.addSubview(composeView)
        
    }
    
    
    
    //封装生成的控制器
    func addChildViewControllers() {
        
        addChildViewControllers(ZZHomeTableViewController(), title: "首页", imageName: "tabbar_home")
        addChildViewControllers(ZZMesageTableViewController(), title: "消息", imageName: "tabbar_message_center")
        addChildViewControllers(ZZDiscoverTableViewController(), title: "发现", imageName: "tabbar_discover")
        addChildViewControllers(ZZProfileTableViewController(), title: "我的", imageName: "tabbar_profile")
        
    }
    
    
        //添加子控制器
    func addChildViewControllers(vc : UIViewController, title : String, imageName : String) {
        //设置导航栏标题
        vc.title = title
        vc.tabBarItem.image = UIImage(named: imageName)
        
        //如果title靠下,则使用这个方法把文字向上偏移
        vc.tabBarItem.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -3)
        //设置偏移量,解决图片和title在一起的时候不能把图片放在中间的问题
//        vc.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: -5, right: 0)
        
        //设置选中图片需要渲染的颜色
        vc.tabBarItem.selectedImage = UIImage(named: imageName+"_selected")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
        //设置选中title的颜色
        vc.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.orangeColor()], forState: UIControlState.Selected)
        //等同于上面的,但是下面的只能设置统一的颜色,上面的可以设置多种颜色的tabBar
//        tabBar.tintColor = UIColor.orangeColor()
        
        //设置导航控制器
        let nav = UINavigationController(rootViewController: vc)
        
        //添加子控制器
        addChildViewController(nav)
    }
    
}


//private  是相对于当前文件的
class person: NSObject {
    func haha() {
        let  tab = ZZMainViewController()
        
        tab.addChildViewControllers()
        
    }
}